package com.ddm.service.webService;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ddm.dto.webDTO.UserUpdateDTO;
import com.ddm.dto.webDTO.WebLoginDTO;
import com.ddm.dto.webDTO.WebRegisterDTO;
import com.ddm.dto.webDTO.WebResetPasswordDTO;
import com.ddm.entity.vxEntity.User;
import com.ddm.result.Result;
import com.ddm.vo.webVo.WebUserVO;

import java.util.List;

public interface WebUserService extends IService<User> {
    void register(WebRegisterDTO registerDTO);
    WebUserVO login(WebLoginDTO loginDTO);
//    void sendVerificationCode(String target, Integer type, Integer usageType);
//    User validateToken(String token);
    WebUserVO login2(WebLoginDTO loginDTO);
    /**
     * 根据ID获取用户完整信息（联表查询）
     */
    User getUserInfoById(long userId);
    /**
     * 获取用户类型
     */
    Integer getUserTypeById(Long userId);

    /**
     * 更新用户信息
     */
    boolean updateUserInfo( UserUpdateDTO user);

    /**
     * 更新用户头像
     */
    boolean updateAvatar(long userId, String photoUrl);
    /**
     * 重置密码（通过验证码）
     */
    Result<String> resetPasswordByVerificationCode(WebResetPasswordDTO resetPasswordDTO);
    /**
     * 更新密码
     */
    Result updatePassword2(Integer userId, String oldPassword, String newPassword);

    /**
     * 查询所有用户的信息
     */
    List<User> getAllUsersWithDeleted();
    /**
     * 查询所有用户的信息(根据姓名和deleted筛选)
     */
    IPage<User> getAllUsersWithConditionPage(Integer pageNum, Integer pageSize, String userName, Integer deleted);

}
